/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.catosist.run.business.gestorDocumentosVehiculo;

import com.catosist.run.dataaccess.domain.DocvehiDao;
import com.catosist.run.dataaccess.model.DocvehiIdVO;
import com.catosist.run.dataaccess.model.DocvehiVO;
import com.catosist.run.dataaccess.model.VehiculoVO;
import com.catosist.run.services.DocvehiDTO;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
 *
 * @author igorov
 */
public class GestorDocumentosVehiculoImpl implements GestorDocumentosVehiculo {
    public List<DocvehiDTO> getAll() {
        List<DocvehiVO> docvehiVOs = docvehiDao.getAll();
//        System.out.println("TAM: " + docvehiVOs.size());
        List<DocvehiDTO> docvehiDTOs = new LinkedList<DocvehiDTO>();
        for (Iterator<DocvehiVO> it = docvehiVOs.iterator(); it.hasNext();) {
            DocvehiVO docvehiVO = it.next();
            DocvehiDTO docvehiDTO = new DocvehiDTO();
            docvehiDTO.setId(docvehiVO.getId().getId());
            docvehiDTO.setAgente(docvehiVO.getAgente());
            docvehiDTO.setFfin(docvehiVO.getFfin());
            docvehiDTO.setFinicio(docvehiVO.getFinicio());
            docvehiDTO.setNombre(docvehiVO.getNombre());
            docvehiDTO.setNumero(docvehiVO.getNumero());
            docvehiDTO.setVehiculoId(docvehiVO.getVehiculo().getId());

            System.out.println("Recuperando: " + docvehiDTO.getNombre() + " con id: "+docvehiDTO.getId());
            docvehiDTOs.add(docvehiDTO);
        }
//        System.out.println("TAM: " + docvehiDTOs.size());
        return docvehiDTOs;
    }

    public List<DocvehiDTO> getAllByNombre() {
        List<DocvehiVO> docvehiVOs = docvehiDao.getAllGroupByNombre();
        List<DocvehiDTO>  docvehiDTOs = new LinkedList<DocvehiDTO>();
        for (Iterator<DocvehiVO> it = docvehiVOs.iterator(); it.hasNext();) {
            DocvehiVO docvehiVO = it.next();
            DocvehiDTO docvehiDTO = new DocvehiDTO();
            docvehiDTO.setAgente(docvehiVO.getAgente());
            docvehiDTO.setFfin(docvehiVO.getFfin());
            docvehiDTO.setFinicio(docvehiVO.getFinicio());
            docvehiDTO.setId(docvehiVO.getId().getId());
            docvehiDTO.setNombre(docvehiVO.getNombre());
            docvehiDTO.setNumero(docvehiVO.getNumero());
            docvehiDTO.setVehiculoId(docvehiVO.getVehiculo().getId());
            docvehiDTOs.add(docvehiDTO);


        }
        return docvehiDTOs;
    }

    public List<DocvehiDTO> getAllByAgente() {
        List<DocvehiVO> docvehiVOs = docvehiDao.getAllGroupByAgente();
        List<DocvehiDTO>  docvehiDTOs = new LinkedList<DocvehiDTO>();
        for (Iterator<DocvehiVO> it = docvehiVOs.iterator(); it.hasNext();) {
            DocvehiVO docvehiVO = it.next();
            DocvehiDTO docvehiDTO = new DocvehiDTO();
            docvehiDTO.setAgente(docvehiVO.getAgente());
            docvehiDTO.setFfin(docvehiVO.getFfin());
            docvehiDTO.setFinicio(docvehiVO.getFinicio());
            docvehiDTO.setId(docvehiVO.getId().getId());
            docvehiDTO.setNombre(docvehiVO.getNombre());
            docvehiDTO.setNumero(docvehiVO.getNumero());
            docvehiDTO.setVehiculoId(docvehiVO.getVehiculo().getId());
            docvehiDTOs.add(docvehiDTO);


        }
        return docvehiDTOs;
    }

    public DocvehiDTO getByIndex(int indice) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public DocvehiDTO getById(int voId) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getIdAtIndex(int indice) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public int getIndexOf(int voId) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void saveOrUpdate(DocvehiDTO o) {
        DocvehiVO docvehiVO = new DocvehiVO();

        DocvehiIdVO docvehiIdVO = new DocvehiIdVO(o.getId(), o.getVehiculoId());
        docvehiVO.setId(docvehiIdVO);

        docvehiVO.setNombre(o.getNombre());
        docvehiVO.setNumero(o.getNumero());
        docvehiVO.setAgente(o.getAgente());
        docvehiVO.setFfin(o.getFfin());
        docvehiVO.setFinicio(o.getFinicio());

        docvehiDao.saveOrUpdate(docvehiVO);
    }

    public void deleteById(int i) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void deleteByIndex(int index) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void updateListVo() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public DocvehiDao getDocvehiDao() {
        return docvehiDao;
    }

    public void setDocvehiDao(DocvehiDao docvehiDao) {
        this.docvehiDao = docvehiDao;
    }

    public List<DocvehiDTO> getByVehiculoId(int vehiculoId) {
        List<DocvehiVO> docpersVOs = docvehiDao.getByVehiculoId(vehiculoId);
        List<DocvehiDTO> docvehiDTOs = new LinkedList<DocvehiDTO>();
        for (Iterator<DocvehiVO> it = docpersVOs.iterator(); it.hasNext();) {
            DocvehiVO docvehiVO = it.next();

            DocvehiDTO docvehiDTO = new DocvehiDTO();
            docvehiDTO.setId(docvehiVO.getId().getId());
            docvehiDTO.setAgente(docvehiVO.getAgente());
            docvehiDTO.setFfin(docvehiVO.getFfin());
            docvehiDTO.setFinicio(docvehiVO.getFinicio());
            docvehiDTO.setNombre(docvehiVO.getNombre());
            docvehiDTO.setNumero(docvehiVO.getNumero());
            docvehiDTO.setVehiculoId(docvehiVO.getVehiculo().getId());

            docvehiDTOs.add(docvehiDTO);
        }
        return docvehiDTOs;
    }

    public void deleteById(int i, int vehiculoId) {
        DocvehiVO docvehiVO = new DocvehiVO();
        docvehiVO.setId(new DocvehiIdVO(i, vehiculoId));
        docvehiDao.delete(docvehiVO);
    }
    private DocvehiDao docvehiDao;

    public DocvehiDTO getById(int id, int vehiculoId) {
        DocvehiVO docvehiVO = docvehiDao.get(new DocvehiIdVO(id, vehiculoId));
        DocvehiDTO docvehiDTO = new DocvehiDTO();
        docvehiDTO.setId(docvehiVO.getId().getId());
        docvehiDTO.setVehiculoId(docvehiVO.getId().getVehiculoId());
        docvehiDTO.setNombre(docvehiVO.getNombre());
        docvehiDTO.setNumero(docvehiVO.getNumero());
        docvehiDTO.setAgente(docvehiVO.getAgente());
        docvehiDTO.setFfin(docvehiVO.getFfin());
        docvehiDTO.setFinicio(docvehiVO.getFinicio());

        return docvehiDTO;
    }
}
